﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Data.SqlClient;
namespace hissql
{
    public partial class Register : Form
    {
        public Register()
        {
            InitializeComponent();
        }

        private void bt_register_Click(object sender, EventArgs e)
        {
            
            if (tb_name.Text == ""||  tb_no.Text == "" || tb_gender.Text == "" || tb_password.Text == ""||tb_identity.Text =="")
            {
                MessageBox.Show("姓名、编号、性别、科室不可为空");
                return;
            }
            SqlConnection sqlConnection = new SqlConnection();                                          //声明并实例化SQL连接；
            sqlConnection.ConnectionString =
                "Server=(local);Integrated Security=SSPI;database=hissql";                         //在字符串变量中，描述连接字符串所需的服务器地址、数据库名称、集成安全性（即是否使用Windows验证）；
            SqlCommand sqlCommand = sqlConnection.CreateCommand();
            if (tb_identity.Text == "医生")
            {

                sqlCommand.CommandText =
                               "INSERT tb_Doctor (Name,No,Gender,Password,Phone) VALUES(@Name,@No,@Gender,HASHBYTES('MD5',@Password),@Phone);";
                sqlCommand.Parameters.AddWithValue("@Name", this.tb_name.Text.Trim());                     //向SQL命令的参数集合添加参数的名称、值；
                sqlCommand.Parameters.AddWithValue("@No", this.tb_no.Text.Trim());
                sqlCommand.Parameters.AddWithValue("@Gender", this.tb_gender.Text.Trim());
                sqlCommand.Parameters.AddWithValue("@PassWord", this.tb_password.Text.Trim());
                sqlCommand.Parameters.AddWithValue("@Phone", this.tb_phone.Text.Trim());
                
                sqlCommand.Parameters["@Password"].SqlDbType = SqlDbType.VarChar;      
            }
               if (tb_identity.Text == "护士")
               {
                   sqlCommand.CommandText =
                                 "INSERT tb_Nurse (Name,No,Gender,Password,Phone) VALUES(@Name,@No,@Gender,HASHBYTES('MD5',@Password),@Phone);";
                   sqlCommand.Parameters.AddWithValue("@Name", this.tb_name.Text.Trim());                     //向SQL命令的参数集合添加参数的名称、值；
                   sqlCommand.Parameters.AddWithValue("@No", this.tb_no.Text.Trim());
                   sqlCommand.Parameters.AddWithValue("@Gender", this.tb_gender.Text.Trim());
                   sqlCommand.Parameters.AddWithValue("@PassWord", this.tb_password.Text.Trim());
                   sqlCommand.Parameters.AddWithValue("@Phone", this.tb_phone.Text.Trim());

                  
                   sqlCommand.Parameters["@Password"].SqlDbType = SqlDbType.VarChar;      
               }

               if (tb_identity.Text == "患者")
               {
                   sqlCommand.CommandText =
                                 "INSERT tb_Patient (Name,No,Gender,Password,Phone) VALUES(@Name,@No,@Gender,HASHBYTES('MD5',@Password),@Phone);";
                   sqlCommand.Parameters.AddWithValue("@Name", this.tb_name.Text.Trim());                     //向SQL命令的参数集合添加参数的名称、值；
                   sqlCommand.Parameters.AddWithValue("@No", this.tb_no.Text.Trim());
                   sqlCommand.Parameters.AddWithValue("@Gender", this.tb_gender.Text.Trim());
                   sqlCommand.Parameters.AddWithValue("@PassWord", this.tb_password.Text.Trim());
                   sqlCommand.Parameters.AddWithValue("@Phone", this.tb_phone.Text.Trim());

                   
                   sqlCommand.Parameters["@Password"].SqlDbType = SqlDbType.VarChar;      
               }  
                
                
                
                
                sqlConnection.Open();                                                                       //打开SQL连接；
                int rowAffected = sqlCommand.ExecuteNonQuery();                                             //调用SQL命令的方法ExecuteNonQuery来执行命令，向数据库写入数据，并返回受影响行数；
                sqlConnection.Close();                                                                      //关闭SQL连接；
                if (rowAffected == 1)                                                                       //若成功写入1行记录；
                {
                    MessageBox.Show("注册成功。");                                                          //给出正确提示；
                }
                else                                                                                        //否则；
                {
                    MessageBox.Show("注册失败！");                                                          //给出错误提示；
                }
            
        }

        private void textBox3_TextChanged(object sender, EventArgs e)
        {

        }

        private void lb_departmentno_Click(object sender, EventArgs e)
        {

        }
    }
}
/*
 
  SqlConnection sqlConnection = new SqlConnection();                                          //声明并实例化SQL连接；
            sqlConnection.ConnectionString =
                "Server=(local);Database=EduBaseDemo;Integrated Security=sspi";                         //在字符串变量中，描述连接字符串所需的服务器地址、数据库名称、集成安全性（即是否使用Windows验证）；
            SqlCommand sqlCommand = sqlConnection.CreateCommand();                                      //调用SQL连接的方法CreateCommand来创建SQL命令；该命令将绑定SQL连接；
            sqlCommand.CommandText =
                "INSERT tb_User (No,Password) VALUES(@No,HASHBYTES('MD5',@Password));";                 //指定SQL命令的命令文本；命令文本包含参数；
            sqlCommand.Parameters.AddWithValue("@No", this.txb_UserNo.Text.Trim());                     //向SQL命令的参数集合添加参数的名称、值；
            sqlCommand.Parameters.AddWithValue("@Password", this.txb_Password.Text.Trim());
            sqlCommand.Parameters["@Password"].SqlDbType = SqlDbType.VarChar;                           //将密码参数的类型设为变长字符串；
                                                                                                        //SQL参数自动识别类型；若参数值为字符串，则类型自动设为NVARCHAR，且可在执行时自动转换；但对于相同密码，VARCHAR/NVARCHAR类型所获得的散列值不同，故需手动将SQL参数类型统一设为VARCHAR;
            sqlConnection.Open();                                                                       //打开SQL连接；
            int rowAffected = sqlCommand.ExecuteNonQuery();                                             //调用SQL命令的方法ExecuteNonQuery来执行命令，向数据库写入数据，并返回受影响行数；
            sqlConnection.Close();                                                                      //关闭SQL连接；
            if (rowAffected == 1)                                                                       //若成功写入1行记录；
            {
                MessageBox.Show("注册成功。");                                                          //给出正确提示；
            }
            else                                                                                        //否则；
            {
                MessageBox.Show("注册失败！");                                                          //给出错误提示；
            }
 */
